home *** CD-ROM | disk | FTP | other *** search
- ;
- ; MODULE: DRVSPC1.ASM - LEM TO READ FREE SPACE ON CURRENT DRIVE
- ;
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- _TEXT ENDS
- _DATA SEGMENT BYTE PUBLIC 'DATA'
- _DATA ENDS
- _BSS SEGMENT BYTE PUBLIC 'BSS'
- _BSS ENDS
- _END SEGMENT BYTE PUBLIC 'LEMEND'
- _END ENDS
-
- DGROUP GROUP _TEXT,_DATA,_BSS,_END
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:_TEXT,DS:DGROUP
-
- EXTRN MY_C_FUNC:NEAR ;C FUNTION TO TEST CALLING LIBRARY
- EXTRN BINEND:BYTE ;DUMMY MODULE LINKED LAST FOR END
-
- ;-------BINARY MOUDULE HEADER
-
- DB 'BIO' ;BIN SIGNATURE
- DD 0 ;RESERVED
- DW BINEND ;LENGTH OF BINARY MODULE
- DB 1 ;ONE ROUTINE IN THIS BIN
-
- ;-------PROCEDURE DEFINITION (GET_FREE)
- DB 'GET_FREE',0,0,0,0,0 ;CLARION FUNCTION NAME (13 BYTES)
- DW CALL_C_LIBRARY ;OFFSET WITH IN BINARY MODULE
- DB 1 ;DEFINDED AS FUNCTION
- DB 1 ;WITH NO PARAMETERS
-
- DB 1 ;SET UP SHORT
- PARM1 DD 0 ;ADDRESS OF VARIABLE
- DW 0 ;LENGTH OF VARIABLE
-
- ;-------END OF HEADER-----------------------------------------------------
-
-
- ;-------Area after header may be used to declare data variable to use-----
- PUBLIC RTNVAL ;MAKE BUFFER AVAILABLE TO C FUNCTION
- RTNVAL DW 0 ;BUFFER FOR RETURN VALUES
- PUBLIC DRVNUM
- DRVNUM DW 0
-
-
-
- ;-------Must be a FAR procedure so that the RET instruction does a far return
- CALL_C_LIBRARY PROC FAR
-
- LES BX,PARM1 ;MOVE PARM1 TO DRVNUM
- MOV AX,ES:[BX]
- MOV DRVNUM,AX
- CALL MY_C_FUNC ;PLACE FREE DISK SPACE IN RTNVAL
-
-
- ;-------Set up registers so that CLARION knows what is being returned
- LEA BX,RTNVAL ;BX: OFFSET OF RETURNED VALUE
- MOV AL,2 ;AL: (2 = RETURNING A LONG)
- RET ;RETURN TO CLARION
-
- CALL_C_LIBRARY ENDP
-
- _TEXT ENDS
- END